<template>
	<view class="defaultStyles">
	</view>
</template>
<script lang="uts">
	/**
   * 引用 iOS 系统库
   * [可选实现，按需引入]
   */



	/**
	 * 引入三方库
	 * [可选实现，按需引入]
	 *
	 * 在 iOS 平台引入三方库有以下两种方式：
	 * 1、通过引入三方库framework 或者.a 等方式，需要将 .framework 放到 ./Frameworks 目录下，将.a 放到 ./Libs 目录下。更多信息[详见](https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#ios-平台原生配置)
	 * 2、通过 cocoaPods 方式引入，将要引入的 pod 信息配置到 config.json 文件下的 dependencies-pods 字段下。详细配置方式[详见](https://uniapp.dcloud.net.cn/plugin/uts-ios-cocoapods.html)
	 *
	 * 在通过上述任意方式依赖三方库后，使用时需要在文件中 import:
	 * 示例：import { LottieAnimationView, LottieAnimation, LottieLoopMode	} from 'Lottie'
	 */

	/**
	 * UTSiOS、UTSComponent 为平台内置对象，不需要 import 可直接调用其API，[详见](https://uniapp.dcloud.net.cn/uts/utsios.html)
	 */
	// import { } from 'Lottie'
	import { UTSComponent } from "DCloudUTSFoundation"
	import { NHT_AMap } from "NHT_AMap"

	//原生提供以下属性或方法的实现
	export default {
		data() {
			return {
			};
		},
		/**
		 * 组件名称，也就是开发者使用的标签
		 */
		name: "jk-amap",
		/**
		 * 组件涉及的事件声明，只有声明过的事件，才能被正常发送
		 */
		// 大写不行!!!
		emits: ["locate", "fetchgis"],
		/**
		 * 属性声明，组件的使用者会传递这些属性值到组件
		 */
		props: {
			"enableFetchGis": {//响应地图选址回调、方法
				type: Boolean,
				default: false
			},
			"enableLocation": {//允许定位
				type: Boolean,
				default: false
			},
			"autoLifeEvent": {
				type: Boolean,
				default: false
			},
		},
		/**
		 * 组件内部变量声明
		 */

		/**
		 * 属性变化监听器实现
		 */
		watch: {
			"enableLocation": {
				handler(newValue : boolean, oldValue : boolean) {
					this.setScrollGesturesEnabled(newValue)
				},
				immediate: false
			},
			"enableFetchGis": {
				handler(newValue : boolean, oldValue : boolean) {
					console.log("xxxxx----enableFetchGis---", newValue,);
					this.setAmapEnableFetchGis(newValue);
				},
				immediate: false
			},
		},
		/**
		 * 规则：如果没有配置expose，则methods中的方法均对外暴露，如果配置了expose，则以expose的配置为准向外暴露
		 * ['publicMethod'] 含义为：只有 `publicMethod` 在实例上可用
		 */
		expose: ['doSomething', 'onResume', 'onPause', 'onDestroy', 'addMarker', 'setMarkerIcon', 'changeCamera', 'clearMap', 'startLocation', "stopLocation", "setZoomControlsEnabled", "setScrollGesturesEnabled", "setMapApi"],
		methods: {
			/**
			 * 对外公开的组件方法
			 * 在uni-app中调用组件方法，可以通过指定ref的方式，例如指定uts-button 标签的ref 为 ’button‘， 调用时使用：this.$refs["button"].doSomething('message');
			 */
			onResume() {
			},
			onPause() {
			},
			onDestroy() {
			},
			clearMap() {
			},


			/**有用的*/
			setMapApi() {
				console.log("---setMapApi");
				this.$el.setMapApi(apiKey = "5442b1d79aae813534f0f379081411d6");
			},
			/* 地图打点 */
			addMarker(latitude : number, longitude : number) {
				console.log("---addMarker");
				this.$el.addMarker(latitude = latitude.toFloat(), longitude = longitude.toFloat())
			},

			/* 设置中心点坐标 */
			changeCamera(latitude : number, longitude : number) {
				console.log("---changeCamera");
				this.$el.setMapCenter(latitude = latitude.toFloat(), longitude = longitude.toFloat())
			},
			/* 开始定位 */
			startLocation() {
				console.log("---startLocation");
				this.$el.startLocation()
			},


			/* 结束定位 */
			stopLocation() {
				this.$el.stopLocation()
			},
			/* 设置打点的图标 */
			setMarkerIcon() {
			},

			/* 设置地图是否可以---手势滑动 */
			setScrollGesturesEnabled(enable : boolean) {
				console.log("---setScrollGesturesEnabled");
				this.$el.setScrollGesturesEnabled(enabled = enable)
			},
			/* 设置地图是否可以---手势缩放 */
			setZoomControlsEnabled(enable : boolean) {
				this.$el.setZoomControlsEnabled(enabled = enable)
			},
			setAmapEnableFetchGis(enable : boolean) {
				if (this.$el != null) {
					console.log("----setEnableFetchGis");
					this.$el.setEnableFetchGis(enabled = enable);
				} else {
					console.log("----setEnableFetchGis，没有");
				}
			},


			/**
			 * 内部使用的组件方法
			 */
		},


		/**
		 * 组件被创建，组件第一个生命周期，
		 * 在内存中被占用的时候被调用，开发者可以在这里执行一些需要提前执行的初始化逻辑
		 * [可选实现]
		 */
		created() {

		},
		/**
		 * 对应平台的view载体即将被创建，对应前端beforeMount
		 * [可选实现]
		 */
		NVBeforeLoad() {

		},
		/**
		 * 创建原生View，必须定义返回值类型
		 * 开发者需要重点实现这个函数，声明原生组件被创建出来的过程，以及最终生成的原生组件类型
		 * [必须实现]
		 */
		NVLoad() : NHT_AMap {
			// -----NHT_AMAPView
			let button = new NHT_AMap()
			button.testBlock = (res : any) => {
				//定位的回调
				console.log('1xxxxx', res);
			};
			button.setMapApi(apiKey = "5442b1d79aae813534f0f379081411d6");
			button.SelectLocationChangeBlock = (res : Map<string, any>) => {
				console.log('选择位置的回调', res);
				//选择位置的回调
				this.$emit('fetchgis', res)
			};
			button.LocationResultBlock = (res : Map<string, any>) => {
				//定位的回调
				console.log('定位回调', res);
				this.$emit('locate', res)
			};
			return button
		},

		/**
		 * 原生View已创建
		 * [可选实现]
		 */
		NVLoaded() {
			/**
			 * 通过 this.$el 来获取原生控件。
			 */
			// this.$el.setTitle(this.buttontext, for = UIControl.State.normal)
			console.log('---NVLoaded');
			this.setScrollGesturesEnabled(this.enableLocation)
			this.setAmapEnableFetchGis(this.enableFetchGis);
		},
		/**
		 * 原生View布局完成
		 * [可选实现]
		 */
		NVLayouted() {

		},
		/**
		 * 原生View将释放
		 * [可选实现]
		 */
		NVBeforeUnload() { },
		/**
		 * 原生View已释放，这里可以做释放View之后的操作
		 * [可选实现]
		 */
		NVUnloaded() {

		},
		/**
		 * 组件销毁
		 * [可选实现]
		 */
		unmounted() { }

		/**
		 * 更多组件开发的信息详见：https://uniapp.dcloud.net.cn/plugin/uts-component.html
		 */

	}
</script>

<style>
	/* 定义默认样式值, 组件使用者没有配置时使用 */
	.defaultStyles {
		width: 750rpx;
		height: 240rpx;
	}
</style>